/**
 * 重写easyUI时间控件，追加【清空】按钮
 */
$(document).ready(function(){
    var d_buttons = $.extend([], $.fn.datebox.defaults.buttons);
    d_buttons.splice(1, 0, {
        text: '清空',
        handler: function(target){
            $(target).datebox('setValue','');
        }
    });
    $('.easyui-datebox').datebox({
        buttons: d_buttons
    });

    var dt_buttons = $.extend([], $.fn.datetimebox.defaults.buttons);
    dt_buttons.splice(2, 0, {
        text: '清空',
        handler: function(target){
            $(target).datetimebox('setValue','');
        }
    });
    $('.easyui-datetimebox').datetimebox({
        buttons: dt_buttons
    });
});



function pad(time) {
    return Number(time)<10?"0"+time:time;
}
// 定义格式化封装函数
function formaDataTime(timer) {
    const year = timer.getFullYear();
    const month = timer.getMonth() + 1 ;// 由于月份从0开始，因此需加1
    const day = timer.getDate();
    const hour = timer.getHours();
    const minute = timer.getMinutes();
    const second = timer.getSeconds();
    return year+"-"+pad(month)+"-"+pad(day)+" "+pad(hour)+":"+pad(minute)+":"+pad(second);
}
// 定义格式化封装函数
function formaData(timer) {
    const year = timer.getFullYear();
    const month = timer.getMonth() + 1 ;// 由于月份从0开始，因此需加1
    const day = timer.getDate();
    return year+"-"+pad(month)+"-"+pad(day);
}

/**
 * datebox,dateboxTime控件数据转换
 * @param s
 * @returns {Date}
 */
function dateboxParser(s){
    var t = Date.parse(s);
    if (!isNaN(t)){
        return new Date(t);
    } else {
        return new Date();
    }
}

/**
 * datebox控件：时间格式化
 * @param date
 * @returns {yyyy-MM-dd>}
 */
function dateboxformatter(date){
    if(!date){
        return "";
    }
    return  formaData(date);

}

/**
 * dateboxTime控件：时间格式化
 * @param date
 * @returns {yyyy-MM-dd HH:mm:ss>}
 */
function dateboxTimeformatter(date){
    if(!date){
        return "";
    }
    return  formaDataTime(date);
}

/**
 * buttoneditTextbox：按钮文本框
 * @param id 控件id
 * @param fun 点击按钮执行函数
 */
function buttoneditTextbox(id,fun){
    $('#'+id).textbox({
        icons: [{
            iconCls:'icon-search',
            handler: function(e){
                if(typeof(fun)==="function"){
                    fun(e);
                }
                //$(e.data.target).textbox('setValue', 'Something added!');
            }
            // },{
            //     iconCls:'icon-remove',
            //     handler: function(e){
            //     $(e.data.target).textbox('clear');
            // }
        }]
    });
}


/**
 * 生成一个用不重复的ID
 */
function guid() {
    return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        let r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
        return v.toString(16);
    });
}
// /**
//  *application/x-www-form-urlencoded
//  * @param form 表单id
//  * @param url 接口url
//  * @param successFuntion 当表单提交成功时触发
//  */
// function formSubmit(form,url,successFuntion){
//     $('#'+form).form("submit",{
//         url:apiPrefix(url),
//         onSubmit: function(param) {
//             //提交前触,发，返回 false 来阻止提交动作
//             //param.paramData=paramData;//追加额外参数key->paramData
//             //进行表单字段验证，当全部字段都有效时返回 true
//             var isValid = $('#' + form).form('validate');
//             if (!isValid) {
//                 // hide progress bar while the form is invalid
//                 $.messager.progress('close');
//             }
//             return isValid;
//         },
//         success:function(data){
//             var e=eval('(' + data + ')');
//             if (e.code==0) {
//                 if(successFuntion && typeof(successFuntion)==="function"){
//                     successFuntion(e);
//                 }
//             }else{
//                 showAlert('信息',e.result,"error");
//             }
//
//         },
//     });
// }



/**
 *
 * @param url 请求url 默认后台会在所有方法前追加api
 * @param type 请求方式，默认post
 * @param data 请求参数
 * @param successfn 成功返回执行函数
 */
// function myAjax(url, type, data, dataType,successfn){
//     type = (type==null || type=="" || typeof(type)=="undefined")? "post" : type;
//     data = (data==null || data=="" || typeof(data)=="undefined")? {} : data;
//     dataType= (dataType==null || dataType=="" || typeof(dataType)=="undefined")? "json" : dataType;
//     $.ajax({
//         url: new URL(location.origin+apiPrefix(url)).toString(),
//         dataType: dataType,
//         data: data,
//         type: type,
//         success: function (res) {
//             successfn(res);
//         },
//         error: function (res) {
//             $.messager.alert('错误信息','操作失败，联系统管理员!','error');
//         }
//     });
// }

/**
 * 弹框
 * @param title 标题
 * @param url 地址
 * @param width 宽
 * @param height 高
 * @param func 回调函数
 */
function windowsOpen(title,url,width,height,func){
    let urlParams=new URL(location.href);
    let _id="";
    if(urlParams.searchParams.has("iframe") === true){
        _id=urlParams.searchParams.get("iframe");
    }else{
        throw new Error('url地址参数[iframe]不存在!');
    }
    if(width==null){
        width=document.body.clientWidth*0.9;
    }
    if(height==null){
        width=document.body.clientHeight*0.9;
    }

    let urlStr = new URL(location.origin+url);
    urlStr.searchParams.append('wid', _id);
    let content = '<iframe  scrolling="auto" frameborder="0"  src="'+ urlStr.toString() +'" style="width:100%;height:98%;"></iframe>';
    let div = document.createElement('div');
    div.id = "win_"+_id;
    div.className="easyui-window"
    top.document.body.appendChild(div);

    top.$('#win_'+_id).window({
        title: title,
        width: width,
        height: height,
        content:content,
        modal: true,
        collapsible:false,//定义是否显示可折叠按钮
        minimizable:false,//定义是否显示最小化按钮
        draggable:true,//定义是否能够拖拽窗口
        resizable:true,//定义是否能够改变窗口大小
        closed: true,
        cache: false,
        inline:true,//义如何布局窗口，如果设置为true，窗口将显示在它的父容器中，否则将显示在所有元素的上面
        zIndex:9999,
        onClose:function(){
            if(typeof(func)==="function"){
                //$('#'+_id).contentWindow.func();
                func();
            }
            //删除windows弹框元素
            top.$('#win_'+_id).remove();
            top.$(".window").remove();
            top.$(".window-shadow").remove();
            top.$(".window-mask").remove();
        }
    });
    top.$('#win_'+_id).window('open');
}

/**
 * 关闭window
 */
function windowsClose(){
    let urlParams=new URL(location.href);
    if(urlParams.searchParams.has("wid") === true){
        let uid=urlParams.searchParams.get("wid");
        top.$('#win_'+uid).window('close');
        //top.$('#win_'+uid).window('destroy');
    }
}

/**
 * 显示警告窗口。参数：
 title：在头部面板显示的标题文本。
 msg：显示的消息文本。
 icon：显示的图标图像。可用值有：error,question,info,warning。
 */
function showAlert(title,msg,icon,func){
    if(arguments.length==1){
        $.messager.alert("提示信息",msg,"info",null);
    }
    if(arguments.length==2){
        $.messager.alert(title,msg,"info",null);
    }
    if(arguments.length==3){
        $.messager.alert(title,msg,icon,null);
    }
    if(arguments.length==4){
        $.messager.alert(title,msg,icon,func);
    }
}




